/*
 * Cliente.h
 *
 *  Created on: 20/08/2012
 *      Author: André Luiz Bonfatti
 *
 */

#include <list>
#include <string>
#include <iostream>
#include "Paciente.h"

using std::list;
using std::string;

#ifndef CLIENTE_H_
#define CLIENTE_H_

class Cliente {
	private:
		string nome;
		string CPF;
		list<Paciente> pacientes;
		list<Paciente>::iterator iPaciente;
		int quant;

	public:
		//Construtores:
		Cliente(std::string n, std::string cpf);
		Cliente();
		~Cliente();


		//Interface:
		void consultarCliente();
		void alterarCliente(string n, string cpf);
		void listarPacientes();
		string getNome();
		string getCPF();
		void setNome(string n);
		void setCPF(string cpf);
		Paciente getPacienteByCodigo(int cod);
		list<Paciente>::iterator getPacienteSelecionado();
		Paciente getPaciente();
		static bool cpfValido(string cpf);
		void adicionarPaciente(string nome, Data dataNasc);
		void selecionarPaciente(Paciente p);
		list<Paciente> getListPaciente();
		void excluirPaciente();

		//Sobrecargas:
	    bool operator==(const Cliente &); //igualdade
	    bool operator!=(const Cliente &); //desigualdade
	    friend std::ostream& operator<<(std::ostream &, Cliente &); //cout
	    friend std::istream& operator>>(std::istream &, Cliente &); //cin
};

#endif /* CLIENTE_H_ */
